public AuthStatus validateRequest( MessageInfo messageInfo
                                     , Subject clientSubject
                                     , Subject serviceSubject
                                     ) {

  String primaryKeyOfUserAsString = null;
  List<String> listOfGroups = new ArrayList<String>();        
  //Auslesen der HTTP-Anfrage sowie Antwort 
  HttpServletRequest request = (HttpServletRequest) (messageInfo.getRequestMessage()); 
  HttpServletResponse response = (HttpServletResponse) (messageInfo.getResponseMessage());
    
  try {                
    //Übergeben der Anfrage an CallbackHandler für JAAS Modul
    campusOnlineCookieCallbackHandler.setRequest(request);
        
    //Durchführen der Identitätsprüfung in Datenbank mittels JAAS 
    //sowie Holen der Berechtigungen wenn BenutzIn eingeloggt
    loginContext.login();
    //Holen des Subjects von JAAS Modul
    Subject subject = loginContext.getSubject();
        
    
    //Haui das ganze if Statement weggeben natürlich auch in Beschreibung
    
    //Wenn BenutzerIn nicht angemeldet war ...
    if (subject == null || subject.getPrincipals() == null) {            
      // ... wird sie auf Anmeldeseite um- sowie wieder zurückgeleitet
      response.sendRedirect("https://myServer.com/login?goToAfter=" + 
                            URLEncoder.encode( request.getRequestURL()...) 
                           );        
      //Aufrufende Umgebung soll Redirect durchführen lassen.
      return AuthStatus.SEND_CONTINUE;            
    }
        
    //Auslesen der Identität sowie Berechtigungen der BenutzerIn
    for (Principal p : subject.getPrincipals()) {            
      if ( p instanceof CoAccountPrincipal ){                                            
          primaryKeyOfUserAsString = p.getName();                
      } else if ( p instanceof CoUserGroupPrincipal ){            
          listOfGroups.add(p.getName());            
    }
        
    //Callbacks für aufrufenden Java Container um die Identität der 
    //Person sowie die Berechtigungen mitzuteilen.
    CallerPrincipalCallback cpCallback = new CallerPrincipalCallback(clientSubject, primaryKeyOfUserAsString);
    GroupPrincipalCallback gpCallback = new GroupPrincipalCallback(clientSubject, listOfGroups.toArray(new String[listOfGroups.size()]));
        
    //Absenden der Informationen an aufrufenden Java Container
    callBackHandler.handle(new Callback[]{cpCallback, gpCallback});
        
    //Mitteilung an Java Container dass Verarbeitung erfolgreich war
    return AuthStatus.SUCCESS;        
  } catch (Exception ex) {        
    //Logging des Fehlers        
    //Abbruch der Verarbeitung aufgrund von Fehler.
    return AuthStatus.SEND_FAILURE;        
  }
}